package com.kly.user.service;

import io.rong.models.Result;
import io.rong.models.message.MessageModel;
import io.rong.models.message.PrivateMessage;
import io.rong.models.response.*;

import java.util.List;

/**
 * 调用融云服务客户端
 * @author linqu
 */
public interface RCClient {

    /**
     * api文档地址：https://doc.rongcloud.cn/imserver/server/v1/user/register
     * 功能描述:注册并获取token 通过调用sdk的方式
     * @param userCode 用户内码
     * @param name 名称
     * @param portraitUri 用户头像
     * @return 连接token
     */
    TokenResult register(String userCode, String name, String portraitUri);

    /**
     * api文档地址：https://doc.rongcloud.cn/imserver/server/v1/user/modify
     * 功能描述：修改用户信息
     * @param userCode 用户id
     * @param name     昵称
     * @param portraitUri 头像地址
     * @return
     */
    Result modifyUser(String userCode, String name, String portraitUri);

    /**
     * api文档地址：https://doc.rongcloud.cn/imserver/server/v1/user/get
     * 功能描述：获取用户信息
     *
     * @param userCode 用户id
     * @return
     */
    UserResult getUserInfo(String userCode);

    /**
     * api文档地址：https://doc.rongcloud.cn/imserver/server/v1/user/check-online-status-by-user
     * 功能描述：查询用户在线状态
     *
     * @param userCode 用户id
     * @return
     */
    CheckOnlineResult checkOnlineStatusByUser(String userCode);

    /**
     * api文档地址：https://doc.rongcloud.cn/imserver/server/v1/user/add-to-blacklist
     * 功能描述：用户添加黑名单
     *
     * @param userCode
     * @param blackUserCodes
     * @return
     */
    public Result addBlackList(String userCode, List<String> blackUserCodes);

    /**
     * api文档地址：https://doc.rongcloud.cn/imserver/server/v1/user/query-blacklist
     * 功能描述：查询用户黑名单
     *
     * @param userCode
     * @return
     */
    BlackListResult queryBlackList(String userCode);


    /**
     * api文档地址：https://doc.rongcloud.cn/imserver/server/v1/user/remove-from-blacklist
     * 功能描述：用户移除黑名单
     *
     * @param userCode
     * @param blackUserCodes
     * @return
     */
    Result removeBlackList(String userCode, List<String> blackUserCodes);

    /**
     * api文档地址： https://doc.rongcloud.cn/imserver/server/v1/message/send-private
     * 消息发送
     * @param privateMessage
     * @return
     */
    ResponseResult sendPrivateMessage(PrivateMessage privateMessage);



    ResponseResult sendPublishMessage(MessageModel messageModel);


}
